<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <script>
    /*
    注意最终结果是剩余的每个非空袋子中的魔法豆数目相等。
最终非空的每个袋子的魔法豆数量肯定可以是最初豆子数的某一个。
所以我们可以先给豆子从小到大排序，依次判断每个袋子中豆子数作为最终数目的最少拿出数量。
也就是，对于第个袋子k, bean个豆子，左边部分必须全部取出（小于等于)，
右边部分必须变成(大于等于)bean。可以用总和减去bean *(beans.length - k)
    */
    var minimumRemoval = function (beans) {
      const sum = beans.reduce((cur, next) => cur + next, 0)
      let ans = sum
      beans.sort((a, b) => a - b)
      for (let i = 0; i < beans.length; i++) {
        ans = Math.min(ans, sum - beans[i] * (beans.length - i))
      }
      return ans
    };

  </script>
</body>

</html>